package month4_14;

/*
猜数字：
请猜（0~100):
1你真厉害,一次就猜对了!
2~～4 你很聪明,猜对了!
5次含以上笨蛋,你猜这么多次!
程序结束!
 */

import java.util.Random;
import java.util.Scanner;

public class guessNumberTest {
    public static void main(String[]args) {
        Random r = new Random();
        int i = r.nextInt(100);//产生随机数
        int time = 1;//计数器
        Scanner input = new Scanner(System.in);
        int b = input.nextInt();
        while (true) {
            if (i == b & time <= 1) {
                System.out.println("你真厉害,一次就猜对了!");
                break;
            } else if (i == b & time <= 4 & time >= 2) {
                System.out.println("你很聪明,猜对了!");
                break;
            } else if (i == b & time > 4) {
                System.out.println("笨蛋,你猜这么多次!");
            }
            b = input.nextInt();
            time += 1;
            continue;
        }
    }
}


//（random()和Random类）产生随机数办法
/*
boolean nextBoolean() 	生成一个随机的 boolean 值，生成 true 和 false 的值概率相等
double nextDouble() 	生成一个随机的 double 值，数值介于 [0,1.0)，含 0 而不包含 1.0
int nextlnt() 	生成一个随机的 int 值，该值介于 int 的区间，也就是 -231~231-1。如果
需要生成指定区间的 int 值，则需要进行一定的数学变换
int nextlnt(int n) 	生成一个随机的 int 值，该值介于 [0,n)，包含 0 而不包含 n。如果想生成
指定区间的 int 值，也需要进行一定的数学变换
void setSeed(long seed) 	重新设置 Random 对象中的种子数。设置完种子数以后的 Random 对象
和相同种子数使用 new 关键字创建出的 Random 对象相同
long nextLong() 	返回一个随机长整型数字
boolean nextBoolean() 	返回一个随机布尔型值
float nextFloat() 	返回一个随机浮点型数字
double nextDouble() 	返回一个随机双精度值

    import java.util.Random;
    public class Test06 {
        public static void main(String[] args) {
            Random r = new Random();
            double d1 = r.nextDouble(); // 生成[0,1.0]区间的小数
            double d2 = r.nextDouble() * 7; // 生成[0,7.0]区间的小数
            int i1 = r.nextInt(10); // 生成[0,10]区间的整数
            int i2 = r.nextInt(18) - 3; // 生成[-3,15)区间的整数
            long l1 = r.nextLong(); // 生成一个随机长整型值
            boolean b1 = r.nextBoolean(); // 生成一个随机布尔型值
            float f1 = r.nextFloat(); // 生成一个随机浮点型值
            System.out.println("生成的[0,1.0]区间的小数是：" + d1);
            System.out.println("生成的[0,7.0]区间的小数是：" + d2);
            System.out.println("生成的[0,10]区间的整数是：" + i1);
            System.out.println("生成的[-3,15]区间的整数是：" + i2);
            System.out.println("生成一个随机长整型值：" + l1);
            System.out.println("生成一个随机布尔型值：" + b1);
            System.out.println("生成一个随机浮点型值：" + f1);
            System.out.print("下期七星彩开奖号码预测：");
            for (int i = 1; i < 8; i++) {
                int num = r.nextInt(9); // 生成[0,9]区间的整数
                System.out.print(num);
            }
        }
    }
 --------------------------------------------------------------------------------------------------------
Math 类的 random() 方法没有参数，它默认会返回大于等于 0.0、小于 1.0 的 double 类型随机数，即 0<=随机数<1.0。
对 random() 方法返回的数字稍加处理，即可实现产生任意范围随机数的功能。

下面使用 random() 方法实现随机生成一个 2~100 偶数的功能。具体代码如下：

    public class Test07 {
        public static void main(String[] args) {
            int min = 2; // 定义随机数的最小值
            int max = 102; // 定义随机数的最大值
            // 产生一个2~100的数
            int s = (int) min + (int) (Math.random() * (max - min));
            if (s % 2 == 0) {
                // 如果是偶数就输出
                System.out.println("随机数是：" + s);
            } else {
                // 如果是奇数就加1后输出
                System.out.println("随机数是：" + (s + 1));
            }
        }
    }

由于 m+(int)(Math.random()*n) 语句可以获取 m~m+n 的随机数，
所以 2+(int)(Math. random()*(102-2)) 表达式可以求出 2~100 的随机数。
在产生这个区间的随机数后还需要判断是否为偶数，这里使用了对 2 取余数，如果余数不是零，
说明随机数是奇数，此时将随机数加 1 后再输出。
 */